1. Field of the Invention
The present invention relates to computer graphics technology.
2. Related Art
As with any type of information processing, computer graphics rendering as used for viewing a static data base has long been the subject of attempts to improve performance. Since the commoditization of computer graphic processing chips for personal computers, one method that has become particularly attractive is to use multiple numbers of these powerful (yet inexpensive) graphic processing units (GPUs) to render a single scene. Although in the archetypical rendering application, the graphic data move from frame to frame under the user's interactive control, a significant number of graphic applications can be characterized as “viewers”.
In these applications, the data have been pregenerated such that their three-dimensional positions in space are not under the interactive control of the user. However, in a viewer application the user does have interactive control of the viewer's position, the direction of view, and the scale of the graphic data. The user also may have control of the selection of a subset of the data and the method by which it is rendered. This includes the effects of lighting, coloration, and other visual characteristics of the underlying data.
There are two predominant methods for rendering graphic data with multiple GPUs. These include time domain composition, in which each GPU renders the next successive frame, and screen space composition, in which each GPU renders a subset of the pixels of each frame.
Time domain composition has the disadvantage of having each GPU render an entire frame. Thus, the speed at which each frame is rendered is limited to the rendering rate of a single GPU. While multiple GPUs enable a higher frame rate, a delay can be imparted in the response time of the system to a user's input. This occurs because, while at any given time only one GPU is engaged in displaying a rendered frame, each of the GPUs is in the process of rendering one of a series of frames in a sequence. To maintain the high frame rate, the system delays acting on the user's input until the specific GPU that first received the signal cycles through the sequence and is again engaged in displaying its rendered frame. In practical applications, this condition serves to limit the number of GPUs that are used in a system. With large data sets another problem is that each GPU must be able to access all of the data. This requires either maintaining multiple copies of large data sets or possible conflicts in accessing the single copy.
Screen space composition has a similar problem with large data sets since each GPU must examine the entire data base to determine which graphic elements fall within its part of the screen.
These problems can become intractable as commercial graphics chips become limited by their ability to access data rather than by their ability to render graphic elements.
One method which allows each GPU to access only a part of the data base is depth composition. Using this method each GPU renders the entire screen and produces both a Z (or depth) buffer and a color buffer. Graphic elements are distributed to GPUs by some hueristic, which is designed to acheive good load balancing. At each pixel the depth values from each of the GPUs are compared and the value indicating the frontmost position is selected. Use of this method is inhibited by the fact that the commodity graphic parts do not output the depth values, which are internally generated. It also requires that the depth buffer be double buffered so that the next frame can be calculated while the current one is displayed. Otherwise performance is effected. This method also prevents the application of some features, such as antialiasing or transparency, which require more information per pixel than just color and depth. Furthermore, volumetric data stored as three-dimensional textures or as geometricly specific textures (such as phototerrain) must be duplicated at each GPU.
What is needed is a method whereby multiple GPUs can, without a latency penalty, render a subset of graphic data from a data base to combine their outputs to form a correct image. This method should permit three-dimensional and other geometrically attached textures to be stored at a single place. Furthermore, such a method should be scalable, so that systems of arbitrary power can be created, and flexible, so that a system can be configured to support a single user at maximum power or multiple users with the total power distributed amongst them.